use std::ops::Index;
use std::fs;
use crate::{row, Row};
#[derive(Default)]
pub struct Document{
    rows:Vec<Row>,
}
impl Document{
    /**
     * 读取传入的文件名字，并返回实例
     */
    pub fn open(filename:&str)->Result<Self,std::io::Error>{
        let contents=fs::read_to_string(filename)?;
        let mut rows=Vec::new();
        for value in contents.lines(){
            rows.push(Row::from(value));
        }
       Ok(Self{
            rows
       })
    }
    /**
     * 获取传入的行数
     */
    pub fn row(&self,index:usize)->Option<&Row>{
        self.rows.get(index)
    }
    /**
     * 返回文件是否为空
     */
    pub fn is_emoty(&self)->bool{
        self.rows.is_empty()
    }
    /**
     * 返回文件有多少行
     */
    pub fn len(&self)->usize{
        self.rows.len()
    }
}
